home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Polygon;
- import java.awt.Rectangle;
- import java.awt.image.ImageObserver;
- import java.util.Date;
- import java.util.StringTokenizer;
-
- public class CalendarCanvas2 extends Canvas {
- int rowHeight;
- int colWidth;
- int month;
- int day;
- int year;
- int dayOfWeek;
- String[] monthNames = new String[12];
- int[] daysInMonth = new int[12];
- Image bkImage;
- Color bkColor;
- Image osImage;
- Graphics osg;
- boolean showDateLines;
- String headerString;
- boolean prevButtonHighlited;
- boolean nextButtonHighlited;
- Color headerColor;
- Color datesColor;
-
- public CalendarCanvas2(Applet var1, int var2) {
- this.daysInMonth[0] = 31;
- this.daysInMonth[1] = 28;
- this.daysInMonth[2] = 31;
- this.daysInMonth[3] = 30;
- this.daysInMonth[4] = 31;
- this.daysInMonth[5] = 30;
- this.daysInMonth[6] = 31;
- this.daysInMonth[7] = 31;
- this.daysInMonth[8] = 30;
- this.daysInMonth[9] = 31;
- this.daysInMonth[10] = 30;
- this.daysInMonth[11] = 31;
- this.GetParameters(var1, var2);
- Date var3 = new Date();
- this.month = var3.getMonth();
- this.day = var3.getDate();
- this.year = var3.getYear() + 1900;
- this.dayOfWeek = var3.getDay();
- this.headerString = this.monthNames[this.month] + " " + this.year;
- this.prevButtonHighlited = false;
- this.nextButtonHighlited = false;
- }
-
- void DoPrevMonth() {
- --this.month;
- this.day = 1;
- if (this.month < 0) {
- this.month = 11;
- --this.year;
- }
-
- this.headerString = this.monthNames[this.month] + " " + this.year;
- ((Component)this).repaint();
- }
-
- void DoNextMonth() {
- ++this.month;
- this.day = 1;
- if (this.month > 11) {
- this.month = 0;
- ++this.year;
- }
-
- this.headerString = this.monthNames[this.month] + " " + this.year;
- ((Component)this).repaint();
- }
-
- void GetParameters(Applet var1, int var2) {
- String var3 = var1.getParameter("calendarBkColor" + var2);
- this.bkColor = AppletParam2.GetColor(var3, (Color)null);
- if (this.bkColor != null) {
- ((Component)this).setBackground(this.bkColor);
- }
-
- var3 = var1.getParameter("calendarBkImage" + var2);
- this.bkImage = AppletParam2.GetImage(var1, var3);
- var3 = var1.getParameter("calendarMonthNames" + var2);
- String var4 = AppletParam2.GetString(var3, "January,February,March,April,May,June,July,August,September,October,November,December");
- StringTokenizer var5 = new StringTokenizer(var4, ",");
-
- for(int var6 = 0; var5.hasMoreTokens(); ++var6) {
- this.monthNames[var6] = var5.nextToken();
- }
-
- var3 = var1.getParameter("calendarShowDateLines" + var2);
- this.showDateLines = AppletParam2.GetBoolean(var3, true);
- var3 = var1.getParameter("calendarHeaderColor" + var2);
- this.headerColor = AppletParam2.GetColor(var3, Color.black);
- var3 = var1.getParameter("calendarDatesColor" + var2);
- this.datesColor = AppletParam2.GetColor(var3, Color.black);
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void paint(Graphics var1) {
- if (this.osImage == null) {
- this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.osg = this.osImage.getGraphics();
- }
-
- this.osg.setColor(((Component)this).getBackground());
- this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- if (this.bkImage != null) {
- int var2 = this.bkImage.getWidth((ImageObserver)null);
- int var3 = this.bkImage.getHeight((ImageObserver)null);
- int var4 = ((Component)this).size().width / var2;
- int var5 = ((Component)this).size().height / var3;
- ++var4;
- ++var5;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- for(int var7 = 0; var7 < var4; ++var7) {
- this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
- }
- }
- }
-
- if (this.prevButtonHighlited) {
- this.osg.setColor(Color.white);
- this.osg.drawLine(0, 0, this.colWidth - 1, 0);
- this.osg.drawLine(0, 0, 0, this.rowHeight - 1);
- this.osg.setColor(Color.black);
- this.osg.drawLine(0, this.rowHeight - 1, this.colWidth - 1, this.rowHeight - 1);
- this.osg.drawLine(this.colWidth - 1, this.rowHeight - 1, this.colWidth - 1, 0);
- }
-
- this.osg.setColor(this.headerColor);
- Polygon var22 = new Polygon();
- var22.addPoint(this.colWidth / 2 - 2, 1);
- var22.addPoint(1, this.rowHeight / 2);
- var22.addPoint(this.colWidth / 2 - 2, this.rowHeight - 2);
- var22.addPoint(this.colWidth / 2 - 2, 1);
- Polygon var23 = new Polygon();
- var23.addPoint(this.colWidth / 2 + 1, this.rowHeight / 2);
- var23.addPoint(this.colWidth - 2, 1);
- var23.addPoint(this.colWidth - 2, this.rowHeight - 2);
- var23.addPoint(this.colWidth / 2 + 1, this.rowHeight / 2);
- this.osg.fillPolygon(var22);
- this.osg.fillPolygon(var23);
- if (this.nextButtonHighlited) {
- this.osg.setColor(Color.white);
- this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, 0, ((Component)this).size().width, 0);
- this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, 0, ((Component)this).size().width - this.colWidth - 1, this.rowHeight - 1);
- this.osg.setColor(Color.black);
- this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, this.rowHeight - 1, ((Component)this).size().width - 1, this.rowHeight - 1);
- this.osg.drawLine(((Component)this).size().width - 1, this.rowHeight - 1, ((Component)this).size().width - 1, 0);
- }
-
- this.osg.setColor(this.headerColor);
- Polygon var25 = new Polygon();
- var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, 1);
- var25.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 - 1, this.rowHeight / 2);
- var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, this.rowHeight - 2);
- var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, 1);
- Polygon var27 = new Polygon();
- var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, 1);
- var27.addPoint(((Component)this).size().width - 2, this.rowHeight / 2);
- var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, this.rowHeight - 2);
- var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, 1);
- this.osg.fillPolygon(var25);
- this.osg.fillPolygon(var27);
- FontMetrics var28 = ((Component)this).getFontMetrics(((Component)this).getFont());
- int var29 = var28.stringWidth(this.headerString);
- int var8 = ((Component)this).size().width / 2 - var29 / 2;
- int var9 = this.rowHeight / 2 + var28.getMaxAscent() / 2;
- this.osg.drawString(this.headerString, var8, var9);
- this.osg.setColor(this.datesColor);
- if (this.showDateLines) {
- for(int var10 = 0; var10 < 7; ++var10) {
- for(int var11 = 0; var11 < 7; ++var11) {
- this.osg.drawRect(var11 * this.colWidth, (var10 + 1) * this.rowHeight, this.colWidth, this.rowHeight);
- }
- }
- }
-
- int var37 = var28.getMaxAscent();
- int var30 = var28.charWidth('S');
- this.osg.drawString("S", this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('M');
- this.osg.drawString("M", this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('T');
- this.osg.drawString("T", 2 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('W');
- this.osg.drawString("W", 3 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('T');
- this.osg.drawString("T", 4 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('F');
- this.osg.drawString("F", 5 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- var30 = var28.charWidth('S');
- this.osg.drawString("S", 6 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
- Date var12 = new Date(this.year - 1900, this.month, 1);
- int var13 = var12.getDay();
- int var14 = var13;
- int var15 = this.daysInMonth[this.month];
- if (this.month == 1) {
- Date var16 = new Date(this.year - 1900, this.month + 1, 1);
- int var17 = var16.getDay();
- Date var18 = new Date(this.year - 1900, this.month, 28);
- int var19 = var18.getDay();
- if (var17 > 0 && var17 - 1 != var19) {
- ++var15;
- }
-
- if (var17 == 0 && var19 != 6) {
- ++var15;
- }
- }
-
- for(int var38 = var13; var38 < var14 + var15; ++var38) {
- int var39 = var38 / 7;
- int var40 = var38 % 7;
- int var41 = var38 - var13 + 1;
- String var20 = "" + var41;
- int var21 = var28.stringWidth(var20);
- this.osg.drawString(var20, var40 * this.colWidth + this.colWidth / 2 - var21 / 2, (var39 + 2) * this.rowHeight + this.rowHeight / 2 + var37 / 2);
- }
-
- var1.drawImage(this.osImage, 0, 0, (ImageObserver)null);
- }
-
- public synchronized void reshape(int var1, int var2, int var3, int var4) {
- this.rowHeight = var4 / 8;
- this.colWidth = var3 / 7;
- this.osImage = null;
- this.osg = null;
- super.reshape(var1, var2, var3, var4);
- ((Component)this).repaint();
- }
-
- public Dimension minimumSize() {
- return new Dimension(100, 100);
- }
-
- public Dimension preferredSize() {
- return new Dimension(100, 100);
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- Rectangle var4 = new Rectangle(0, 0, this.colWidth, this.rowHeight);
- Rectangle var5 = new Rectangle(((Component)this).size().width - this.colWidth, 0, this.colWidth, this.rowHeight);
- if (var4.inside(var2, var3)) {
- this.DoPrevMonth();
- return true;
- } else if (var5.inside(var2, var3)) {
- this.DoNextMonth();
- return true;
- } else {
- return false;
- }
- }
-
- public boolean mouseUp(Event var1, int var2, int var3) {
- return false;
- }
-
- public boolean mouseMove(Event var1, int var2, int var3) {
- Rectangle var4 = new Rectangle(0, 0, this.colWidth, this.rowHeight);
- Rectangle var5 = new Rectangle(((Component)this).size().width - this.colWidth, 0, this.colWidth, this.rowHeight);
- if (var4.inside(var2, var3)) {
- if (!this.prevButtonHighlited) {
- this.prevButtonHighlited = true;
- this.nextButtonHighlited = false;
- ((Component)this).repaint();
- return true;
- } else {
- return false;
- }
- } else if (var5.inside(var2, var3)) {
- if (!this.nextButtonHighlited) {
- this.nextButtonHighlited = true;
- this.prevButtonHighlited = false;
- ((Component)this).repaint();
- return true;
- } else {
- return false;
- }
- } else {
- if (this.prevButtonHighlited || this.nextButtonHighlited) {
- this.prevButtonHighlited = false;
- this.nextButtonHighlited = false;
- ((Component)this).repaint();
- }
-
- return false;
- }
- }
- }
-